/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */

package modelo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Clase Entidad Permiso (JPA)
 * @author cgomez
 */
@Entity
@Table(name = "permiso")
@NamedQueries({@NamedQuery(name = "Permiso.findByIdPermiso", query = "SELECT p FROM Permiso p WHERE p.idPermiso = :idPermiso"), @NamedQuery(name = "Permiso.findByDescripcionPermiso", query = "SELECT p FROM Permiso p WHERE p.descripcionPermiso = :descripcionPermiso")})
public class Permiso implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idPermiso", nullable = false)
    private Integer idPermiso;
    @Column(name = "descripcionPermiso", nullable = false)
    private String descripcionPermiso;
    @Column(name = "userAudita", nullable = false)
    private String userAudita;
    @Column(name = "descripcionMenu", nullable = false)
    private String descripcionMenu;
    @Column(name = "tagMenu", nullable = false)
    private String tagMenu;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "permiso")
    private Collection<Permisorol> permisorolCollection;

    /**
     * Crea una nueva instancia de Permiso
     */    
    public Permiso() {
    }
    /**
     * Crea una nueva instancia de Permiso con valores especificos
     * @param idPermiso El idPermiso de Permiso
     */
    public Permiso(Integer idPermiso) {
        this.idPermiso = idPermiso;
    }
    
    /**
     * Crea una nueva instancia de Permiso con valores especificos
     * @param idPermiso El idPermiso de Permiso
     * @param descripcionPermiso La descripcionPermiso de Permiso
     */
    public Permiso(Integer idPermiso, String descripcionPermiso) {
        this.idPermiso = idPermiso;
        this.descripcionPermiso = descripcionPermiso;
    }
    
    /**
     * Obtiene el idPermiso de Permiso
     * @return El idPermiso de Permiso
     */
    public Integer getIdPermiso() {
        return idPermiso;
    }
    /**
     * Fija el identificador idPermiso de Permiso al valor especificado
     * @param idPermiso El identificador sexo de Permiso
     */
    public void setIdPermiso(Integer idPermiso) {
        this.idPermiso = idPermiso;
    }
    
    /**
     * Obtiene el descripcionPermiso de Permiso
     * @return El descripcionPermiso de Permiso
     */
    public String getDescripcionPermiso() {
        return descripcionPermiso;
    }
    /**
     * Fija el identificador descripcionPermiso de Permiso al valor especificado
     * @param descripcionPermiso El identificador descripcionPermiso de la Permiso
     */
    public void setDescripcionPermiso(String descripcionPermiso) {
        this.descripcionPermiso = descripcionPermiso;
    }
    
    /**
     * Obtiene el descripcionMenu de Permiso
     * @return El descripcionMenu de Permiso
     */
    public String getDescripcionMenu() {
        return descripcionMenu;
    }
    /**
     * Fija el identificador descripcionMenu de Permiso al valor especificado
     * @param descripcionMenu El identificador descripcionMenu de la Permiso
     */
    public void setDescripcionMenu(String descripcionMenu) {
        this.descripcionMenu = descripcionMenu;
    }
    
    /**
     * Obtiene el tagMenu de Permiso
     * @return El tagMenu de Permiso
     */
    public String getTagMenu() {
        return tagMenu;
    }
    /**
     * Fija el identificador tagMenu de Permiso al valor especificado
     * @param tagMenu El identificador tagMenu de la Permiso
     */
    public void setTagMenu(String tagMenu) {
        this.tagMenu = tagMenu;
    }
    
    /**
     * Obtiene el userAudita de Permiso
     * @return El userAudita de Permiso
     */
    public String getUserAudita() {
        return userAudita;
    }
    /**
     * Fija el identificador userAudita de Permiso al valor especificado
     * @param userAudita El identificador userAudita de la Permiso
     */
    public void setUserAudita(String userAudita) {
        this.userAudita = userAudita;
    }
    
    /**
     * Obtiene un permisorolCollection de Permiso
     * @return el permisorolCollection de Permiso
     */    
    public Collection<Permisorol> getPermisorolCollection() {
        return permisorolCollection;
    }
    /**
     * Fija el permisorolCollection de Permiso al valor especificado
     * @param permisorolCollection el permisorolCollection de Permiso
     */
    public void setPermisorolCollection(Collection<Permisorol> permisorolCollection) {
        this.permisorolCollection = permisorolCollection;
    }
    
    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idPermiso != null ? idPermiso.hashCode() : 0);
        return hash;
    }
    /**
     * Determina si otro objeto es igual a Permiso. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Permiso
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Permiso)) {
            return false;
        }
        Permiso other = (Permiso) object;
        if ((this.idPermiso == null && other.idPermiso != null) || (this.idPermiso != null && !this.idPermiso.equals(other.idPermiso))) {
            return false;
        }
        return true;
    }
    
    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return idPermiso + "["+this.getDescripcionPermiso()+"]";
    }

}
